import scrapy

import bs4
from ..items import SpiderBookItem


class BookLatestSpider(scrapy.Spider):
    # 定义一个爬虫类DoubanSpider
    # name是定义爬虫的名字，这个名字是爬虫的唯一标识。
    # name = 'book_douban'意思是定义爬虫的名字为book_douban。
    # 等会我们启动爬虫的时候，要用到这个名字。
    name = 'book_latest'

    # allowed_domains是定义允许爬虫爬取的网址域名（不需要加https://）。
    # 如果网址的域名不在这个列表里，就会被过滤掉。
    allowed_domains = ['book.douban.com']

    # start_urls是定义起始网址，就是爬虫从哪个网址开始抓取。
    # 并且allowed_domains的设定对start_urls里的网址不会有影响。
    start_urls = ['https://book.douban.com/latest']

    # parse是默认处理response的方法
    def parse(self, response):
        # 用BeautifulSoup解析response
        bs = bs4.BeautifulSoup(response.text, 'html.parser')
        datas = bs.find('ul', class_="chart-dashed-list").find_all('li')

        # 遍历datas
        for data in datas:
            # 实例化SpiderBookItem这个类
            item = SpiderBookItem()

            # 提取出抓取到的数据设置到对应的SpiderBookItem类的属性里
            item['title'] = data.find_all('a')[1].text
            item['cover'] = data.find_all('img')[0]['src']
            item['url'] = data.find_all('a')[1]['href']
            item['score'] = data.find_all('span')[1].text

            # 打印抓取到的数据
            print(item['title'])
            print(item['cover'])
            print(item['url'])
            print(item['score'])
            print('')

            # yield item是把获得的item传递给引擎
            yield item
        pass
